//
// Copyright (C) [2024] Xingyun Integrated Circuit, Inc.
//
// GreenCode was a private technology asset of Xingyun Integrated Circuit， Inc （Confidential）
//  Author: Shawn.Tan
//  Date : 2025.10.28
//
//  History : Initial Version 2025.10.28
//

//
#ifndef Green_VmInfoGPGPU_H
#define Green_VmInfoGPGPU_H

#include "VmInfo.h"

namespace Green {

  /*!
    \class VmInfoGPGPU
    \brief A class for VmMapper look up.
  */
  class VmInfoGPGPU : public VmInfo {
  public:
    VmInfoGPGPU() : VmInfo() { } //!< Default constructor.
    ~VmInfoGPGPU() { } //!< Destructor.

    EVmRegimeType RegimeType(bool* pIsValid=nullptr) const override; //!< Return the current VM regime type.
    const std::string ToString() const override; //!< Return the VmInfoGPGPU in string format.
    void GetCurrentStates(const Generator& rGen) override; //!< Obtain the current GPGPU VM attributes.
    bool PagingEnabled() const override; //!< Indicate whether paging is enabled in the specified VM.
  protected:
    const std::string GetRegisterNameForField(EVmInfoBoolType attrType, const Generator& rGen) const override; //!< Get the register name associated with the VmInfo boolean attribute.
  };

}

#endif
